home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / src / bin / pssnap / sgi / pssnap.main.c < prev   
C/C++ Source or Header  |  1992-10-08  |  3KB  |  125 lines

  1. /* 
  2.  * pssnap.main.c
  3.  * author:  Celeste Fowler
  4.  * date:  June 12, 1992
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include "geom.h"
  9. #include "polylistP.h"
  10. #include "camera.h"
  11. #include "forms.h"
  12. #include "pssnap.h"
  13.  
  14. #define min(a, b) ((a) < (b) ? (a) : (b))
  15. #define max(a, b) ((a) > (b) ? (a) : (b))
  16.  
  17. int flag = PS_EDGES | PS_FACES | PS_COLOR;
  18. FL_FORM *MainForm;
  19. FL_OBJECT *SaveButton, *QuitButton, *FaceDrawButton, *EdgeDrawButton,
  20.   *ColorDrawButton, *FileInput;
  21.  
  22. void SaveProc(FL_OBJECT *obj, long val);
  23. void QuitProc(FL_OBJECT *obj, long val);
  24. void OptionsProc(FL_OBJECT *obj, long val);
  25.  
  26. main(int argc, char *argv[]) {
  27.   foreground();
  28.  
  29.   MainForm = fl_bgn_form(FL_NO_BOX, 300, 200);
  30.   fl_add_box(FL_UP_BOX, 0, 0, 300, 200, "");
  31.  
  32.   SaveButton = fl_add_lightbutton(FL_PUSH_BUTTON, 25, 20, 100, 40,
  33.                  "Save");
  34.   fl_set_call_back(SaveButton, SaveProc, 0);
  35.  
  36.   QuitButton = fl_add_button(FL_NORMAL_BUTTON, 175, 20, 100, 40,
  37.                  "Quit");
  38.   fl_set_call_back(QuitButton, QuitProc, 0);
  39.  
  40.   FaceDrawButton = fl_add_lightbutton(FL_PUSH_BUTTON, 0, 160, 100, 40,
  41.                  "Draw Faces");
  42.   fl_set_object_lsize(FaceDrawButton, FL_SMALL_FONT); 
  43.   fl_set_call_back(FaceDrawButton, OptionsProc, PS_FACES);
  44.   fl_set_button(FaceDrawButton, 1);
  45.  
  46.   EdgeDrawButton = fl_add_lightbutton(FL_PUSH_BUTTON, 100, 160, 100, 40,
  47.                 "Draw Edges");
  48.   fl_set_object_lsize(EdgeDrawButton, FL_SMALL_FONT); 
  49.   fl_set_call_back(EdgeDrawButton, OptionsProc, PS_EDGES);
  50.   fl_set_button(EdgeDrawButton, 1);
  51.  
  52.   ColorDrawButton = fl_add_lightbutton(FL_PUSH_BUTTON, 200, 160, 100, 40,
  53.                   "Use Color");
  54.   fl_set_object_lsize(ColorDrawButton, FL_SMALL_FONT); 
  55.   fl_set_call_back(ColorDrawButton, OptionsProc, PS_COLOR);
  56.   fl_set_button(ColorDrawButton, 1);
  57.  
  58.   FileInput = fl_add_input(FL_NORMAL_INPUT, 25, 80, 250, 40, 
  59.                "Filename:");
  60.   fl_set_input(FileInput, "snap.ps");
  61.   fl_set_object_align(FileInput, FL_ALIGN_TOP);
  62.   fl_end_form();
  63.   fl_show_form(MainForm, FL_PLACE_SIZE, TRUE, "PS Snapshot");
  64.     
  65.   while(1) fl_do_forms();
  66.  
  67. }
  68.  
  69.  
  70. void SaveProc(FL_OBJECT *obj, long val)
  71. {
  72.   int i;
  73.   FILE *outfile = stdout, *infile = stdin;
  74.   Camera *c;
  75.   Geom *o, *onew;
  76.  
  77.   /* Get the current object. */
  78.   printf("(write geometry - targetgeom )\n");
  79.   fflush(stdout);
  80.   
  81.   if ((outfile = fopen(fl_get_input(FileInput), "w")) == NULL) {
  82.     OOGLError(0, "Unable to open output file %s", fl_get_input(FileInput));
  83.     exit(1);
  84.   }
  85.  
  86.   o = GeomFLoad(stdin, NULL);
  87.   
  88.   printf("(write camera - targetcam)\n");
  89.   fflush(stdout);
  90.   
  91.   c = CamFLoad(NULL, stdin, "stdin");  
  92.   
  93.   /* Do the viewing transformations. */
  94.   onew = PolyProject(o, c);
  95.   GeomDelete(o);
  96.  
  97.   PolyToPSInit(outfile, flag);
  98.   PolyToPS(onew, outfile, flag);
  99.   fprintf(outfile, "showpage\n");
  100.  
  101.   fclose(outfile);
  102.  
  103.   GeomDelete(onew);
  104.  
  105.   fl_set_button(SaveButton, 0);
  106.  
  107. }  
  108.   
  109.  
  110. void QuitProc(FL_OBJECT *obj, long val) 
  111. {
  112.   exit(0);
  113. }
  114.  
  115.  
  116. void OptionsProc(FL_OBJECT *obj, long val)
  117. {
  118.   flag ^= val;
  119.  
  120.  
  121.  
  122.  
  123.  
  124.